import router from '@/router'
// @ts-ignore
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'
nprogress.configure({ showSpinner: false });
// 获取用户小仓库内部的token数据，判断是否登录成功
import pinia from './store'
import useUserStore from './store/modules/user'
let userStore = useUserStore(pinia)

// 全局前置守卫
// @ts-ignore
router.beforeEach(async(to:any,from:any,next:any) => {
  document.title = `医美后台管理系统 - ${to.meta.title}`
  nprogress.start()
  let token = userStore.token
  let username = userStore.username
  if(token){
    if(to.path == '/login'){
      next({path:'/'})
    }else{
      if(username){
        next() // 登录成功且有用户信息 访问其他页面 直接放行
      }else{
        try{
          userStore.userInfo()
          // 刷新异步路由，获取到用户信息但异步路由没有加载完毕，空白页面处理
          next({...to})
        }catch(error){
          userStore.userLogout()
          // next({path:'/login',query:{redirect:to.path}})
          next({path:'/login'})
        }
      }
    }
  }else{
    if(to.path == '/login'){
      next() // 未登录访问登录页 直接放行
    }else{
      // next({path:'/login',query:{redirect:to.path}}) //未登录访问其他页面 放行到登录页
      next({path:'/login'})
    }
  }
})

// 全局后置守卫
// @ts-ignore
router.afterEach((to:any,from:any) => {
  nprogress.done()
})